# -*- coding: utf-8 -*-

"""
  Llibreria que controla engranatges formats per dos engranatges.
  Soluciona les incògnites que hi pugui haver, i n'agafa dades com
  la relació de transmissió o els valors.
  
  Utilitzada com a llibreria a sistema_en.py
"""

class Engranatge:
      def __init__(self,n1=None,n2=None,z1=None,z2=None,sentit1=None,sentit2=None):
	  self.survival = False
	  self.n1 = n1
	  self.n2 = n2
	  self.z1 = z1
	  self.z2 = z2
	  self.sentit1 = sentit1
	  self.sentit2 = sentit2
	  self._fill()
      
      def _reverse(self, q):
	  if q == "horari": return "antihorari"
	  else: return "horari"
      
      def printSentit(self):
	  print "Sentit 1:", self.sentit1
	  print "Sentit 2:", self.sentit2
      
      def getSentit(self):
	  return (self.sentit1,self.sentit2)
      
      def printRT(self):
	  ans = float(self.n2)/float(self.n1)
	  if float(self.z1)/float(self.z2) == ans: print u"Relació de transmissió:", ans
	  
      def getRT(self):
	  ans = float(self.n2)/float(self.n1)
	  if float(self.z1)/float(self.z2) == ans: return ans
	  
      def printValues(self):
	  print "n1:",self.n1
	  print "n2:",self.n2
	  print "z1:",self.z1
	  print "z2:",self.z2
      
      def getValues(self):
	  return (self.n1,self.n2,self.z1,self.z2)
      
      def _fill(self):
	  if not self.n1 and not self.n2:
	     print u"Avís: No tinc massa dades... Podria rebre si us plau n1 o n2? Per ara intentaré sobreviure amb el que tinc."
	     self.survival = True
	  if not self.z1 and not self.z2:
	     print u"Avís: No tinc massa dades... Podria rebre si us plau z1 o z2? Per ara intentaré sobreviure amb el que tinc."
	     if not self.survival: self.survival = True
	     else:
	        print u"No tinc dades! Adéu"
	        exit()
	  # n1*z1 = n2*z2
	  if self.z1 and self.z2 and self.n1:
	     self.n2 = (self.n1*self.z1)/float(self.z2)
	  elif self.n1 and self.n2 and self.z1:
	     self.z2 = (self.n1*self.z1)/float(self.n2)
	  elif self.z1 and self.z2 and self.n2:
	     self.n1 = (self.z2*self.n2)/float(self.z1)
	  elif self.n1 and self.n2 and self.z2:
	     self.z1 = (self.n2*self.z2)/float(self.n1)
	  else:
	     print "Error"
	     exit()
	  self.n1 = float(self.n1)
	  self.n2 = float(self.n2)
	  self.z1 = float(self.z1)
	  self.z2 = float(self.z2)
	  if not self.sentit1 and not self.sentit2:
	     self.sentit1 = "horari"
	     self.sentit2 = self._reverse(self.sentit1)
	  elif self.sentit2:
	     self.sentit1 = self._reverse(self.sentit2)
	  else:
	     self.sentit2 = self._reverse(self.sentit1)

if __name__ == "__main__":
  e = Engranatge(n1=80,n2=240,z1=None,z2=17)
  e.printRT()
  e.printValues()
  e.printSentit()